【小ネタ】AWS CLI を使用した KMS キーのアクセス許可状況の確認方法
はじめに
テクニカルサポートの 片方 です。
KMS(AWS Key Management Service)では様々なアクセス許可のパターンや認可条件がございます。
そのため、KMS(AWS Key Management Service)が関係するお問い合わせがある際に、対象 KMS キーのアクセス許可がされているかの判断有無は大変です。
その様な場合には、AWS CLI コマンドを利用することで、対象 KMS キーの呼び出しが成功するかどうかを確認可能です。
やってみた
以下ドキュメントを参考にやってみました。
簡単に説明すると、該当 KMS キーのアクセス許可をテストするため、API リクエストの際、"--dry-run" を指定することで、KMS キーのアクセス許可状況を確認可能です。
メッセージには次の例外が含まれます。
・DryRunOperationException ‐ DryRun が指定されていなければリクエストは成功します。
・ValidationException ‐ 間違った API パラメータが指定されたためリクエストが失敗しました。
・AccessDeniedException ‐ KMS リソースで指定された API アクションを実行するアクセス許可がありません。
AWS CLI サンプルコマンド
aws kms create-grant \
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
--grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
--operations Decrypt \
--dry-run
失敗時
※ 一部マスクします
An error occurred (AccessDeniedException) when calling the CreateGrant operation: User: arn:aws:sts::123456789012:assumed-role/AmazonSSMManagedInstanceCore/i-0448983f5ef5edb4d is not authorized to perform: kms:CreateGrant on resource: arn:aws:kms:ap-northeast-1:123456789012:key/aaaabbbb-xxxx-xxxx-1234-5678xxxxxxxx because no identity-based policy allows the kms:CreateGrant action
成功時
対象ロールへ、kms:CreateGrant アクションを許可します。
An error occurred (DryRunOperationException) when calling the CreateGrant operation: The request would have succeeded, but the DryRun option is set.
DryRunOperationException であるため、DryRun オプションを使用しなければ成功することを確認できました。
参考資料
- AWS Key Management Service(マネージド型の暗号化キー作成と管理)| AWS
- AWS KMS API コールのテスト - AWS Key Management Service
- Actions - AWS Key Management Service
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。